﻿Imports AccesoDatos
Public Class MultiSalario

#Region "Stephan"

    ''' <summary>
    ''' Registra el salario de un empleado
    ''' </summary>
    ''' <param name="p_idUsuario">Identificación del usuario</param>
    ''' <param name="p_fecha">fecha</param>
    ''' <param name="p_salarioBruto">salario bruto</param>
    ''' <param name="p_salarioNeto">salario neto</param>
    ''' <param name="p_valorBonificacion">valor de la bonificaciones</param>
    ''' <remarks>Creador por: Stephan Endres, Fecha: 24/06/2010, Modificado: 28/06/2010.</remarks>
    Public Shared Sub registrar(ByVal p_idUsuario As String, ByVal p_fecha As Date, ByVal p_salarioBruto As Double, ByVal p_salarioNeto As Double, ByVal p_valorBonificacion As Double)

        Dim sql As String
        Dim pars(4) As Parametro
        sql = "insert into t_salario(codigo_empleado, fecha, salario_bruto, salario_neto, bono_valor) values (p_idUsuario, p_fecha, p_salarioBruto, p_salarioNeto, p_valorBonificacion)"

        pars(0) = New Parametro("p_idUsuario", p_idUsuario)
        pars(1) = New Parametro("p_fecha", p_fecha)
        pars(2) = New Parametro("p_salarioBruto", p_salarioBruto)
        pars(3) = New Parametro("p_salarioNeto", p_salarioNeto)
        pars(4) = New Parametro("p_valorBonificacion", p_valorBonificacion)

        g_access.ejecutarSQL(sql, pars)

    End Sub

    ''' <summary>
    ''' Realiza una busqueda de todos los salarios en la base de datos.
    ''' </summary>
    ''' <returns>Lista de objetos Salario</returns>
    ''' <remarks>Creador por: Stephan Endres, Fecha: 24/06/2010, Modificado: 24/06/2010.</remarks>
    Public Shared Function buscarSalarios() As List(Of Salario)
        Dim dr As IDataReader
        Dim listaSalariosCuentas As New List(Of Salario)
        Dim sql As String

        sql = "SELECT * FROM t_salario"

        dr = g_access.ejecutarQuery(sql)

        While dr.Read()
            listaSalariosCuentas.Add(cargarSalario(dr))
        End While

        Return listaSalariosCuentas
    End Function

    ''' <summary>
    ''' Crea un objeto Salario resiviendo un IDataReader
    ''' </summary>
    ''' <param name="dr">IData Reader con los datos de salarios</param>
    ''' <returns>Salario</returns>
    ''' <remarks>Creador por: Stephan Endres, Fecha: 24/06/2010, Modificado: 24/06/2010.</remarks>
    Public Shared Function cargarSalario(ByVal dr As IDataReader) As Salario
        Dim objSalario As Salario
        With dr
            objSalario = New Salario(CStr(.Item("codigo_empleado")), CDate(.Item("fecha")), CDbl(.Item("salario_bruto")), CDbl(.Item("salario_neto")), CDbl(.Item("bono_valor")))
        End With
        Return objSalario
    End Function

    ''' <summary>
    ''' Busca la suma de los salarios netos de todos los empleados de un mes.
    ''' </summary>
    ''' <param name="p_mes">Un numero que representa un mes</param>
    ''' <returns>Double</returns>
    ''' <remarks>Creador por: Stephan Endres, Fecha: 20/06/2010, Modificado: 20/06/2010.</remarks>
    Public Shared Function aplicarPlanilla(ByVal p_mes As Integer) As Double
        Dim drSalario As IDataReader
        Dim pars(0) As Parametro
        Dim resultadoPlanilla As Double
        Dim sql As String

        sql = "select sum(salario_neto) from t_salario where month(fecha) = p_mes"
        pars(0) = New Parametro("p_mes", p_mes)

        drSalario = g_access.ejecutarQuery(sql, pars)
        Try
            While drSalario.Read()
                With drSalario
                    resultadoPlanilla = CDbl(drSalario.Item(0))
                End With
            End While
        Catch ex As Exception
            resultadoPlanilla = 0
        End Try

        Return resultadoPlanilla
    End Function

    ''' <summary>
    ''' Resive el ultimo salario registrado en la base de datos
    ''' </summary>
    ''' <returns>Objeto Salario</returns>
    ''' <remarks>Creador por: Stephan Endres, Fecha: 24/06/2010, Modificado: 28/06/2010.</remarks>
    Public Shared Function buscarSalario() As Salario
        Dim dr As IDataReader
        Dim objSalario As Salario = Nothing
        Dim sql As String

        sql = "SELECT * FROM t_salario"

        dr = g_access.ejecutarQuery(sql)

        While dr.Read()
            With dr
                objSalario = New Salario(CStr(.Item("codigo_empleado")), CDate(.Item("fecha")), CDbl(.Item("salario_bruto")), CDbl(.Item("salario_neto")), CDbl(.Item("bono_valor")))
            End With
        End While

        Return objSalario
    End Function

#End Region

#Region "Elías Baldioceda"
    ''' <summary>
    ''' Busca los salarios de un empleado.
    ''' </summary>
    ''' <param name="p_identificacion">Número de identificación.</param>
    ''' <returns>Lista de objetos Salario.</returns>
    ''' <remarks>Creador por: Elías Baldioceda, Fecha: 28/06/2010, Modificado: 28/06/2010.</remarks>
    Public Shared Function buscar(ByVal p_identificacion As String) As List(Of Salario)
        Dim dr As IDataReader
        Dim salarios As New List(Of Salario)
        Dim sql As String
        Dim pars(0) As Parametro

        sql = "SELECT * FROM t_salario WHERE codigo_empleado=p_identificacion ORDER BY fecha DESC;"
        pars(0) = New Parametro("p_identificacion", p_identificacion)

        dr = g_access.ejecutarQuery(sql, pars)

        While dr.Read()
            salarios.Add(cargarSalario(dr))
        End While

        Return salarios
    End Function
#End Region


End Class
